import pandas as pd
from datetime import datetime


def error2(df, styles_df, column1, column2, column3):
    """
    在Excel文件中的指定列下，比较每一行的两个单元格中的数据，如果不符合规则，则把这两个单元格都标黄。

    :param df: 原始数据 DataFrame
    :param styles_df: 样式 DataFrame，用于设置 Excel 格式
    :param column1: 体重（kg）
    :param column2: 体重控制建议（公斤）
    :param column3: 体质指数
    """
    try:
        # 比较规则函数
        def highlight_if_not_correct(row):
            # 获取体重、体重控制建议、体质指数
            weight = row[column1]
            weight_suggestion = row[column2]
            bmi = row[column3]

            # 体重设置上下限
            if weight > 130 or weight < 40:
                # 不符合规则，标橙
                styles_df.loc[row.name, [column1]] = 'background-color: orange'

            # 如果体质指数大于24，体重控制建议应该比当前体重大约减少1-2公斤
            if bmi > 24:
                if not (weight - 2 <= weight_suggestion <= weight - 1):
                    # 不符合规则，标黄
                    styles_df.loc[row.name, [column1, column2, column3]] = 'background-color: blue'

            return [''] * len(row)

        # 应用样式
        df.apply(highlight_if_not_correct, axis=1)
        print("[体重]已完成处理。")

    except Exception as e:
        print(f"体重处理时发生错误：{e}")
